<template>
  <div class="dashboard-container">
    <div class="app-container">
      <UploadExcel :on-success="handleSuccess" :before-upload="beforeUpload" />
    </div>
  </div>
</template>
<script>
import { formatExcelDate } from '@/utils/index'
import { importEmployees } from '@/api/employees'
export default {
  name: 'Excel',
  methods: {
    beforeUpload(file) {
      const isLt1M = file.size / 1024 / 1024 < 1

      if (isLt1M) {
        return true
      }

      this.$message({
        message: 'Please do not upload files larger than 1m in size.',
        type: 'warning'
      })
      return false
    },
    // 将Excel中的数据转换成接口需要使用的字段
    transExcel(results) {
      // 1.声明枚举的数据
      const userRelations = {
        '入职日期': 'timeOfEntry',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber',
        '部门': 'departmentName',
        '聘用形式': 'formOfEmployment'
      }
      // 2.遍历传递过来的results,获取到中文的key
      return results.map(item => {
        // 3.声明一个最终形成的对象
        const obj = {}
        // 4.将每一项对象中的中文key 筛选出来形成一个新的数组
        const contentKeys = Object.keys(item)
        // 5.遍历形成的中文key,根据提前声明的好的枚举数据,将中文key转成英文key
        contentKeys.forEach(key => {
          const transKey = userRelations[key]
          // 6.transKey就是对应的英文key,根据item中的中文key找出对应的value,赋值给动态添加的obj[transKey]
          // 7.判断transKey是否是入职时间或者转正时间,如果是需要转成标准时间戳
          if (transKey === 'timeOfEntry' || transKey === 'correctionTime') {
            obj[transKey] = new Date(formatExcelDate(item[key]))
          } else {
            obj[transKey] = item[key]
          }
        })
        return obj
      })
    },
    // 读取之后实现的功能 -- 还没测试
    async handleSuccess({ results, header }) {
      this.tableData = results
      this.tableHeader = header
      const arr = this.transExcel(results)
      const res = await importEmployees(arr)
      console.log(res)
      this.$message.success(res.message)
      this.$router.back()
    }
    // 第二遍转换的数据
    // transExcels(results) {
    //   // 1.声明好枚举的数据
    //   const userRelations = {
    //     '入职日期': 'timeOfEntry',
    //     '手机号': 'mobile',
    //     '姓名': 'username',
    //     '转正日期': 'correctionTime',
    //     '工号': 'workNumber',
    //     '部门': 'departmentName',
    //     '聘用形式': 'formOfEmployment'
    //   }
    //   // 2.根据传递过来的results,通过map方法遍历数组
    //   return results.map(item => {
    //     // 3.声明一个最终形成的对象
    //     const obj = {}
    //     // 4.将所有的中文的key筛选出来,组成一个新的数组
    //     const contentKeys = Object.keys(item)
    //     // 4.遍历筛选出来的中文key数组
    //     contentKeys.forEach(key => {
    //       // 5.根据枚举的数据,将中文key转换成英文的key
    //       const transKey = userRelations[key]
    //       // 6.中文key对应的value赋值给英文key对应的value
    //       obj[transKey] = item[key]
    //     })
    //     return obj
    //   })
    // }
  }
}
</script>
<style scoped lang="less"></style>
